/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Auxiliares;

/**
 *
 * @author Jonathan Mendez
 */
import java.awt.Component;
import java.awt.Container;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
import java.util.Calendar;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
       
public class FuncionesComunes 
{
    public static boolean EsNumericoXCantidadDigitos(String num, int digitos){
        Pattern patron = Pattern.compile("\\d{8}");
        Matcher matcher = patron.matcher(num);
        
        return matcher.matches();
    }
    
    public static boolean EsNumerico(String s)
    {
        for(int i=0;i<s.length();i++)   
            if(s.charAt(i) < '0' || s.charAt(i)> '9' )
                return false;
        return true;
    }

    public static String Fecha()
    {
        String fecha = null;
        Calendar calendario = Calendar.getInstance();
        fecha = calendario.get(calendario.DATE)+"/"+calendario.get(calendario.MONTH+1)+"/"+calendario.get(calendario.YEAR);
        return fecha;
    }
    /*
     * busca limpiar todos los textbox de una ventana mientras no estén excluidos
     * Esta función recibe 2 parámetros, 1 de tipo panel y uno para excluir objetos del mismo
     */
    
    public static void LimpiarTextBox(Component component, Object... Excluidos) 
    {
        boolean Excluido = false;
        if (component instanceof JTextField) 
        {
            JTextField text = (JTextField) component;        
            if (Excluidos!=null)
                for (int i = 0; i<Excluidos.length; i++)
                    if (text.getName().equals(((JTextField)Excluidos[i]).getName()))
                        Excluido = true;
            if (!Excluido)
            {
                text.setText("");
                Excluido = false;
            }
        } 
        else 
            if (component instanceof Container) 
                for (Component c : ((Container) component).getComponents()) 
                    LimpiarTextBox(c,Excluidos);
    }
    
    public static void MostrarOcultarLbl (JPanel Ventana, boolean Estado, Object... Excluidos) 
    {
        Component[] Componente = Ventana.getComponents();
        for(int i=0; i<Componente.length;i++) 
        {
            boolean Excluido = false;
            if(Componente[i] instanceof JLabel) 
            {
                //cuando no hay excluidos, la variable queda nula
                if (Excluidos != null)
                    for(int j=0; j<Excluidos.length; j++)
                        //comparar que el nombre del objeto excluido sea igual al objeto en la ventana
                        if (((JLabel)Componente[i]).getName().equals(((JLabel)Excluidos[j]).getName()))
                            Excluido = true;
                if (Excluido == false)
                    ((JLabel)Componente[i]).setVisible(Estado);
            }
        }
    }
    
    public static void MostrarOcultarTxt (JPanel Ventana, boolean Estado, Object... Excluidos) 
    {
        Component[] Componente = Ventana.getComponents();
        for(int i=0; i<Componente.length;i++) 
        {
            boolean Excluido = false;
            if(Componente[i] instanceof JTextField) 
            {
                //cuando no hay excluidos, la variable queda nula
                if (Excluidos != null)
                    for(int j=0; j<Excluidos.length; j++)
                        //comparar que el nombre del objeto excluido sea igual al objeto en la ventana
                        if (((JTextField)Componente[i]).getName().equals(((JTextField)Excluidos[j]).getName()))
                        //if ((Componente[i]).getName().equals(((JTextField)Excluidos[j]).getName()))
                            Excluido = true;
                if (Excluido == false)
                    ((JTextField)Componente[i]).setVisible(Estado);
                    //(Componente[i]).setVisible(Estado);
            }
        }
    }   
    
    public static boolean TxtLimpio (Component Ventana, Object... Excluidos) 
    {
        for (Component c : ((Container) Ventana).getComponents()) 
        {
            boolean Excluido = false;
            if(c instanceof JTextField) 
            {
                //cuando no hay excluidos, la variable queda nula
                if (Excluidos != null)
                    for(int j=0; j<Excluidos.length; j++)
                        //comparar que el nombre del objeto excluido sea igual al objeto en la ventana
                        if (((JTextField)c).getName().equals(((JTextField)Excluidos[j]).getName()))
                            Excluido = true;
                if (Excluido == false)
                    if ("".equals(((JTextField)c).getText()))
                        return true;
            }
        }
        return false;
    }
    
     /*este metodo recibe el jdeskopPane y el archivo imagen*/
    public static void cargarImagen(javax.swing.JDesktopPane jDeskp,File fileImagen)
    {
        try
        {
            BufferedImage image = ImageIO.read(fileImagen);
            jDeskp.setBorder(new PintaImagen(image)); 
        }
        catch (Exception e)
        {   System.out.println("No cargo imagen, sorry");   }
    }
    
    public static void copyFile(File s, String t)
    {
        try{
              FileChannel in = (new FileInputStream(s)).getChannel();
              FileChannel out = (new FileOutputStream(t)).getChannel();
              in.transferTo(0, s.length(), out);
              in.close();
              out.close();
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }
}